Шаг 317 - Изучаем периодический – Значение на дату.

Мы уже очень много посмотрели из периодического но так и не знаем как получить значение на конкретную дату. Нам это нужно так как мы выбираем в обработке именно дату.

ЗначениеНаДату
Получить актуальное значение на заданную дату.

Синтаксис:
ЗначениеНаДату(<Дата>)
Англоязычный синоним:
ValueOnDate

Параметры:
<Дата> Выражение, задающее значение даты, на которую требуется получить периодический реквизит справочника или периодическую константу.

Возвращаемое значение:
Полученное актуальное значение на заданную дату.

Описание:
С помощью метода ЗначениеНаДату можно получить значение, актуальное на заданную дату. Причем текущая позиция выборки (см. ВыбратьЗначение) не сдвигается и не сбрасывается.

Я написал функцию которая получает значение периодического.

Процедура ПолучениеЗначенияПереодического(ИмяРеквизита) 
     ПереодическийЭлемент=СоздатьОбъект("Периодический");
     ПереодическийЭлемент.ИспользоватьОбъект(ИмяРеквизита, Спр.ТекущийЭлемент());
     ЗначениеРеквизита=ПереодическийЭлемент.ЗначениеНаДату(ДатаПолучения);
КонецПроцедуры

Эта функция заполняет переменные модуля.

Перем ПереодическийЭлемент; 
Перем Спр; 
Перем ЗначениеРеквизита;

Дальше я перебираю элементы справочника, потом периодические реквизиты в справочнике и удаляю ошибку перенося реквизит на нужную дату.

Процедура Выполнить()     
     Перем Т;
     Т = СоздатьОбъект("Таблица");
     Т.ИсходнаяТаблица("Таблица");

    Спр =СоздатьОбъект("Справочник.ОсновныеСредства");
     Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()>0 Цикл 
        ПолучениеЗначенияПереодического("МОЛ");
        МолТек=ЗначениеРеквизита; 
        ЛиквидацияОшибкиПереодического(МолТек);
       
        ПолучениеЗначенияПереодического("Подразделение");
        ПодразделениеТек= ЗначениеРеквизита; 
        ЛиквидацияОшибкиПереодического(ПодразделениеТек);
        
        ПолучениеЗначенияПереодического("Состояние");
        СостояниеТек= ЗначениеРеквизита;
        ЛиквидацияОшибкиПереодического( СостояниеТек);
        
        ПолучениеЗначенияПереодического("СчетЗатрат");
        СчетЗатратТек= ЗначениеРеквизита;
        ЛиквидацияОшибкиПереодического(СчетЗатратТек);     
        
        ПолучениеЗначенияПереодического("СрокПолезногоИспользования");
        СрокПолезногоИспользованияТек= ЗначениеРеквизита;
        ЛиквидацияОшибкиПереодического( СрокПолезногоИспользованияТек);
        
       Т.ВывестиСекцию("Секция_1");
     КонецЦикла;
     Т.ТолькоПросмотр(1);
     Т.Показать()

КонецПроцедуры      
Hosted by uCoz